package cn.iocoder.yudao.module.system.dal.dataobject.tenant;

import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 租户 DO
 *
 * @author 芋道源码
 */
@TableName(value = "system_tenant", autoResultMap = true)
@KeySequence("system_tenant_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TenantDO extends BaseDO {

    /**
     * 套餐编号 - 系统
     */
    public static final Long PACKAGE_ID_SYSTEM = 0L;

    /**
     * 租户编号，自增
     */
    private Long id;

    /**
     * 业务类型
     * 1-普通租户
     * 2-代理商租户
     */
    private Integer bizType;
    /**
     * 租户名，唯一
     */
    private String name;

    /**
     * 基于name和id的md5签名
     */
    private String sign;
    /**
     * 联系人的用户编号
     *
     * 关联 {@link AdminUserDO#getId()}
     */
    private Long contactUserId;
    /**
     * 联系人
     */
    private String contactName;
    /**
     * 联系手机
     */
    private String contactMobile;
    /**
     * 租户状态
     *
     * 枚举 {@link CommonStatusEnum}
     */
    private Integer status;


    /**
     * 绑定域名
     */
    private String website;
    /**
     * 租户套餐编号
     *
     * 关联 {@link TenantPackageDO#getId()}
     * 特殊逻辑：系统内置租户，不使用套餐，暂时使用 {@link #PACKAGE_ID_SYSTEM} 标识
     */
    private Long packageId;

    /**
     * 父级租户编号
     */
    private Long parentId;

    /**
     * 过期时间
     */
    private LocalDateTime expireTime;

    /**
     * CID 主叫分组
     */
    private String cidGroup;

    /**
     * 钱包余额
     */
    private BigDecimal wallet;

    /**
     * VOIP 主叫号码
     */
    private String callNumber;

    /**
     * 认证类型： 1-企业版； 2-个人版
     */
    private Integer authType;

//    /**
//     * 外呼扣费类型： 1-员工； 2-共享
//     */
//    private Integer callCostType;

    // 话费成本价
    private BigDecimal callCostPrice;

    // 话费销售价
    private BigDecimal callSalePrice;
//
//    /**
//     * 企业外呼分钟数余额
//     */
//    private Integer callBalance;
//
//    /**
//     * 账号数量上限
//     */
//    private Integer userAccountLimit;
//
//    /**
//     * 坐席数量上限
//     */
//    private Integer agentAccountLimit;
//
//    /**
//     * 机器人数量上限
//     */
//    private Integer robotAccountLimit;
//
//    /**
//     * 机器人外呼分钟数余额
//     */
//    private Integer robotCallBalance;
//
//    /**
//     * 广告账号上限
//     */
//    private Integer adAccountLimit;
//
//    /**
//     * 客服账号上限
//     */
//    private Integer serviceAccountLimit;
//
//    /**
//     * 企业池每日领取上限
//     */
//    private Integer entReceiveLimit;
//
//    /**
//     * okcc 主叫
//     */
//    private String callNumber;

    // ================= 代理商 新增
    private String productName;
    private String logo;
}
